package com.lvy.hczn.transmit.domain.dto.cteck;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 配送订单表
 *
 * @author yw
 * @date 2023-06-03 10:10:42
 **/
@Data
public class DeliveryOrderInfo implements Serializable {

    @ApiModelProperty(value = "主键")
    private String id;

    @ApiModelProperty(value = "配送单号")
    private String deliveryCode;

//    @ApiModelProperty(value = "供应商编码")
//    private String supplierCode;

    @ApiModelProperty(value = "配送商类型:1:骑手,2:司机")
    private Integer deliveryType;

    @ApiModelProperty(value = "业务类型:1销售配送/2销售退货配送/3发货配送")
    private Integer serviceType;

    @ApiModelProperty(value = "业务单号:销售单号/销售退货单号/发货单号")
    private String serviceCode;

    @ApiModelProperty(value = "货箱数量")
    private Integer cartonNum;

    @ApiModelProperty(value = "总数量")
    private Integer totalNum;

    @ApiModelProperty(value = "总重量")
    private BigDecimal totalWeight;

    @ApiModelProperty(value = "总体积")
    private BigDecimal totalVolume;

    @ApiModelProperty(value = "取货码")
    private String pickupCode;

    @ApiModelProperty(value = "入仓码")
    private String entryCode;

    @ApiModelProperty(value = "预约取货时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date appointPickupTime;

    @ApiModelProperty(value = "实际取货时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date pickupTime;

    @ApiModelProperty(value = "最晚到达时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date latestArriveTime;

    @ApiModelProperty(value = "实际到达时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date arriveTime;

    @ApiModelProperty(value = "取件地(供应商编码,仓库编码)")
    private String pickup;

    @ApiModelProperty(value = "取件地(供应商名称,仓库名称)")
    private String pickupName;

    @ApiModelProperty(value = "取件地址")
    private String pickupAddress;

    @ApiModelProperty(value = "取件联系人")
    private String pickupPerson;

    @ApiModelProperty(value = "取件联系电话")
    private String pickupPhone;

    @ApiModelProperty(value = "目的地(目的仓编码)")
    private String destiny;

    @ApiModelProperty(value = "目的地(目的仓名称)")
    private String destinyName;

    @ApiModelProperty(value = "目的地地址")
    private String destinyAddress;

    @ApiModelProperty(value = "目的地联系人")
    private String destinyPerson;

    @ApiModelProperty(value = "目的地联系电话")
    private String destinyPhone;

    @ApiModelProperty(value = "配送费")
    private BigDecimal deliveryFee;

    @ApiModelProperty(value = "配送服务费")
    private BigDecimal deliveryServiceFee;

    @ApiModelProperty(value = "状态:1待分拣2待取货3配送中4已送达5已取消")
    private Integer status;

    @ApiModelProperty(value = "入库单编码")
    private String warehouseCode;

    @ApiModelProperty(value = "配送商id")
    private String enterpriseId;

    @ApiModelProperty(value = "配送员用户id")
    private String deliveryUserId;

    @ApiModelProperty(value = "0:未删除,1:已删除")
    private Integer isDelete;

    @ApiModelProperty(value = "创建人")
    private String createBy;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    @ApiModelProperty(value = "修改人")
    private String updateBy;

    @ApiModelProperty(value = "修改时间")
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    @ApiModelProperty(value = "配送订单明细列表")
    private List<DeliveryOrderInfoDetail> list;

    @ApiModelProperty(value = "数据来源")
    private String sourceId;

    @ApiModelProperty(value = "买家id")
    private String buyerId;

    @ApiModelProperty(value = "买家名称")
    private String buyerName;

    @ApiModelProperty(value = "单据来源 0:C端,1:B端")
    private Integer sourceOrigin;

    /**
     * 备注
     */
    private String remark;

    @ApiModelProperty(value = "是否退货（true:是）")
    private boolean returnOfGoods;

    @ApiModelProperty(value = "是否拒收（true:是）")
    private boolean goodsRejected;

    @ApiModelProperty(value = "如：拒收配送之类的，需要绑定销售配送单号，则赋值销售配送单号")
    private String otherNo;

    @ApiModelProperty(value = "分拣出入口")
    private String sortCode;
}
